perm filename XX[XGP,BGB] blob sn#043292 filedate 1973-05-23 generic text, type T, neo UTF8
                     ------------------ RPROG/EDIT (PROG) --------------------------

                     BOOLEAN PROCEDURE EDIT(INTEGER COMMAND, EDIT_SCN, EDIT_LINE;
                                            INTEGER EDIT_CHAR, A1, A2; STRING S1);
                     BEGIN
                       INTEGER SEARCH_SCENE, SEARCH_LINE, SEARCH_CHAR;
                       INTEGER SEARCH_CNT, TIME0, TIME1;

                       # OTHER_EDIT_ROUTINES;
                       BOOLEAN PROCEDURE SEARCH(INTEGER S_SCENE, S_LINE, S_CHAR;
                                                STRING WHAT);
                       BEGIN
                         INTEGER SCN, LN, CHR, CH1;  STRING SRCH_STR;

                         # SEARCH_PRIMITIVES;
                         SCN ← S_SCENE; TIME1 ← SYSTEM_TIME() - TIME0;
                         SEARCH_CNT;  TIME1;
                         FOR LN ← S_LINE STEP 1 UNTIL GETLENGTH(SCN)
                         DO BEGIN
                           SEARCH_CNT ← SEARCH_CNT + 1;
                   →       SRCH_STR ← GET_TEXT(SCN, LN, CHR+1, 999); CHR ← 0;
                                                                     _
                           IF (CH1←FIND_STRING(WHAT, SRCH_STR)) THEN BEGIN
                             SEARCH_SCN ← SCN; SEARCH_LINE ← LN;
                             SEARCH_CHAR ← CHR+CH1+1; RETURN(TRUE)
                           END Comment recursive search;;
                         ↔ WHILE (CH1←FIND_STRING("#", SRCH_STR)) DO
                            IF SEARCH(FIND_SCENE(SRCH_STR[CH1+1 TO 999]),1,0,WHAT)



                     ------------------ RDATA/DATA ------------------------

                     USER.COPILOT(...);
                     BEGIN
                       TARG1.TEXTPROG(...);
                       BEGIN
                         TARG1.EDIT(...);
                         BEGIN
                           ...; SEARCH_CNT = 12;
                           ...; TIME1 = 4.05; ...;
                           TARG1.SEARCH#2(S_SCENE = 3, ..., WHAT = "THIS ONE");
                         ↔ BEGIN
                             ...; CHR = 0; ...
                           END;
                         END;
                       END;
                     END;




       COMMAND          EXPANDED                       COMMENT

       ⊗4<cr>    MOVE_CURSOR(CRNT_REG, 4, 0, 0, 0);    [1] The edit-cursor is moved
       αF;       FIND_STRING(CRNT_REG,";",1);            down 4 lines, then out to
       αFC       FIND_STRING(CRNT_REG,"C",1);            the first "C" after a ";"

       ⊗;        SET_P(GET_PROCESS(EP),
                        EDIT_STRUCT(CRNT_REG) );       [2] The IP is set to the edit-
       ⊗X        STEPP(GET_PROCESS(EP), "↓");           cursor location, then the next
       ⊗X        STEPP(GET_PROCESS(EP), "↓");           2 statements are executed.
                                                         (note changed val for CHR)